//通过值调整链（而不是数据）交换两个相邻元素
#include<list>
#include<iostream>

using namespace std;
template<class T>
void my_swap(list<T> &a,int b){
    if(a.size()>b&&b!=0){
        auto p1 = a.begin();
        for(int i = 0;i<b;i++)
            p1++;
        T b = *p1;
        auto p2 = a.erase(p1); //erase 在p1位置的object，
        p2++;
        a.insert(p2,b);//在b位置添加

        

    }
}




int main(int argc, char *argv[])
{
    /* code */
    list<int> a{1,2,3,4,5,6,7};
    my_swap(a,3);
    for(auto i = a.begin(); i!=a.end();i++){
        cout << *i << " " ;

    }
    cout << endl;
    return 0;
}


